package com.lagou.edu.service.impl;


import com.lagou.edu.service.SendEmailService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zjy
 */
@Service
@Slf4j
public class SendEmailServiceImpl implements SendEmailService {


    @Value("${email.username}")
    private String username;


    @Value("${email.password}")
    private String password;


    @Value("${email.name}")
    private String name;


    @Value("${email.subject}")
    private String subject;


    @Value("${email.hostname}")
    private String hostname;



    @Override
    public Boolean sendEmail(String emailAddress,String code) {

        if (StringUtils.isEmpty(emailAddress) || StringUtils.isEmpty(code) ) {
            throw new RuntimeException("邮箱地址或验证码不能为空！");
        }
        log.info("进入发送邮件服务>>>>>>>>>>>,email:{},code:{}",emailAddress,code);

        try {
            HtmlEmail email = new HtmlEmail();
            List<String> list = new ArrayList<String>();
            list.add(emailAddress);
            String[] tos = list.toArray(new String[list.size()]);

            // 这里是SMTP发送服务器的名字：163的如下："smtp.163.com"
            email.setHostName(hostname);

//                email.setSSLOnConnect(true);
//                email.setSmtpPort(465);

            // 字符编码集的设置
            email.setCharset("UTF-8");
            // 收件人的邮箱
            email.addTo(tos);
            // 发送人的邮箱以及发件人名称
            email.setFrom(username, name);
            // 如果需要认证信息的话，设置认证：用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
            email.setAuthentication(username, password);
            // 要发送的邮件主题
            email.setSubject("注册验证码");
            // 要发送的信息，由于使用了HtmlEmail，可以在邮件内容中使用HTML标签
            email.setHtmlMsg("您好 " + emailAddress + " \n" +
                    "欢迎注册拉钩，请将验证码：" + code + "，填写到注册页面。验证码有效期为：5分钟!");

            String result1 = email.send();
            System.out.println("发送邮件返回>>>>>>>" + result1);
            return true;
        } catch (Exception e) {
            System.err.println(">>>>>>>发送邮件发生异常>>>>>>>");
            e.printStackTrace();
            return false;
        }




    }






}
